package com.ruoyi.project.system.service.impl;

import java.util.List;
import java.util.UUID;

import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ruoyi.project.system.mapper.TDrugsMapper;
import com.ruoyi.project.system.mapper.TOrderMapper;
import com.ruoyi.project.system.domain.TDrugs;
import com.ruoyi.project.system.domain.TOrder;
import com.ruoyi.project.system.service.ITOrderService;

/**
 * 【请填写功能名称】Service业务层处理
 *
 * @author ruoyi
 * @date 2020-05-11
 */
@Service
public class TOrderServiceImpl implements ITOrderService {
    @Autowired
    private TOrderMapper tOrderMapper;
    @Autowired
    private TDrugsMapper tDrugsMapper;

    /**
     * 查询【请填写功能名称】
     *
     * @param id 【请填写功能名称】ID
     * @return 【请填写功能名称】
     */
    @Override
    public TOrder selectTOrderById(Long id) {
        return tOrderMapper.selectTOrderById(id);
    }

    /**
     * 查询【请填写功能名称】列表
     *
     * @param tOrder 【请填写功能名称】
     * @return 【请填写功能名称】
     */
    @Override
    public List<TOrder> selectTOrderList(TOrder tOrder) {
        return tOrderMapper.selectTOrderList(tOrder);
    }

    /**
     * 新增【请填写功能名称】
     *
     * @param tOrder 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int insertTOrder(TOrder tOrder) {
        return tOrderMapper.insertTOrder(tOrder);
    }

    /**
     * 修改【请填写功能名称】
     *
     * @param tOrder 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int updateTOrder(TOrder tOrder) {
        return tOrderMapper.updateTOrder(tOrder);
    }

    /**
     * 批量删除【请填写功能名称】
     *
     * @param orderNos 需要删除的【请填写功能名称】ID
     * @return 结果
     */
    @Override
    public int deleteTOrderByIds(String[] orderNos) {
        return tOrderMapper.deleteTOrderByIds(orderNos);
    }

    /**
     * 删除【请填写功能名称】信息
     *
     * @param id 【请填写功能名称】ID
     * @return 结果
     */
    @Override
    public int deleteTOrderById(Long id) {
        return tOrderMapper.deleteTOrderById(id);
    }

    @Override
    public int insertTOrderList(List<TOrder> orders) {
        String orderNo = getSerialIdByUUId();
        for (int i = 0; i < orders.size(); i++) {
            orders.get(i).setOrderNo(orderNo);
        }
        return tOrderMapper.insertTOrderList(orders);
    }

    @Override
    public List<TOrder> selectTOrderNoList(TOrder tOrder) {
        tOrder.setFlag("0");
        return tOrderMapper.selectTOrderNoList(tOrder);
    }

    public static String getSerialIdByUUId() {
        int hashCodeV = UUID.randomUUID().toString().hashCode();
        if (hashCodeV < 0) {//有可能是负数
            hashCodeV = -hashCodeV;
        }
        // 0 代表前面补充0
        // % 12 代表长度为12
        // d 代表参数为正数型
        return String.format("%04d", hashCodeV);
    }

    @Override
    public List<TDrugs> getDrugsOrderList(String orderNo) {
        return tDrugsMapper.selectDrugsOrderList(orderNo);
    }

    @Override
    public int updateOrderShip(String[] orderNos) {
        return tOrderMapper.updateOrderShip(orderNos);
    }

    @Override
    public int updateOrderReceipt(String[] orderNos) {
        return tOrderMapper.updateOrderReceipt(orderNos);
    }

    @Override
    public List<TOrder> getOrderDetailed(TOrder tOrder) {
        List<TOrder> listOrder = this.selectTOrderNoList(tOrder);
        if (CollectionUtils.isNotEmpty(listOrder)) {
            listOrder.forEach(o ->
                    o.setDrugsList(this.getDrugsOrderList(o.getOrderNo()))
            );
        }
        return listOrder;
    }
}
